﻿<%@ Control Language="C#" AutoEventWireup="true" CodeFile="GenelTextBox.ascx.cs"
    Inherits="SemiCASE.UserControls.GenelTextBox" %>
<link href="../App_Themes/Main/Main.css" rel="stylesheet" type="text/css" />
<asp:Label ID="GenelEtiket" runat="server" Text=""></asp:Label>
<asp:Label ID="LabelKalanKarakterSayisi" runat="server" Text="" ForeColor="Gray"
    Font-Size="X-Small" ToolTip="Kalan karakter sayısı" BackColor="White" Style="position: absolute;
    margin-top: -5px; z-index: 99;"></asp:Label>
<asp:TextBox ID="GenelMetinKutusu" runat="server" Font-Names="Verdana" BorderStyle="Solid"
    onFocus="TextBoxFocused(this);" onBlur="SetBluredStyle(this);" BorderWidth="1px"
    onkeypress="return SetTextFormat(this,event);" onKeyUp="return SetYazimSekli(this,event);"
    BorderColor="LightSteelBlue" Font-Size="small"></asp:TextBox>
<asp:Label ID="LabelOrnek" runat="server" Text="" ForeColor="Gray" Font-Size="X-Small"
    ToolTip="Örnek veri"></asp:Label>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorGenelMetinKutusu" runat="server"
    ControlToValidate="GenelMetinKutusu" ErrorMessage=""></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidatorGenelMetinKutusu" runat="server"
    ControlToValidate="GenelMetinKutusu" ErrorMessage=""></asp:RegularExpressionValidator>
<asp:RangeValidator ID="RangeValidatorGenelMetinKutusu" runat="server" ErrorMessage=""
    ControlToValidate="GenelMetinKutusu"></asp:RangeValidator>
<asp:HiddenField ID="HiddenFieldMaskelemeTipi" runat="server" />
<asp:HiddenField ID="HiddenFieldYazimSekli" runat="server" />
<asp:HiddenField ID="HiddenFieldFocusBackColor" runat="server" />
<asp:HiddenField ID="HiddenFieldFocusForeColor" runat="server" />
<asp:HiddenField ID="HiddenFieldBlurBackColor" runat="server" />
<asp:HiddenField ID="HiddenFieldBlurForeColor" runat="server" />
<asp:HiddenField ID="HiddenFieldText" runat="server" />
<asp:HiddenField ID="HiddenFieldAutoPostback" runat="server" />
<asp:HiddenField ID="HiddenFieldMaxLength" runat="server" />
<asp:HiddenField ID="HiddenFieldMinLength" runat="server" />
<asp:HiddenField ID="HiddenFieldMultiLine" runat="server" />

<script src="../JScripts/UserControlTextBox.js" type="text/javascript"></script>

<script language="javascript" type="text/javascript">

    function GetHiddenFieldsAsObjectGmk(sender, hdnFld) {
        var sndrID = sender.id;
        var parca = sndrID.split('_');
        var kntrl = parca[parca.length - 1];
        var dizin = sndrID.replace(kntrl, "");
        var hdnName = dizin + hdnFld;
        hdnName = hdnName.replace(/_/g, '$');
        var hdnObj = document.getElementsByName(hdnName)[0];
        return hdnObj;
    }

    function GetLabelAsObjectGmk(sender, lbl) {
        var sndrID = sender.id;
        var parca = sndrID.split('_');
        var kntrl = parca[parca.length - 1];
        var dizin = sndrID.replace(kntrl, "");
        var lbl = dizin + lbl;
        var lblObj = document.getElementById(lbl);
        return lblObj;
    }

    var MaskelemeTipi = '';
    var YazimSekli = '';
    var FocusBackColor = '';
    var FocusForeColor = '';
    var BlurBackColor = '';
    var BlurForeColor = '';
    var MetinEtiketi = null;
    var MetinEtiketiForeColor = '';
    var MetinEtiketiBackColor = '';
    var AutoPostback = '0';
    var MaxLength = '0';
    var MinLength = '0';
    var txtChanged = '0';
    var MultiLine = '0';

    function TextBoxFocused(sender) {
        MaskelemeTipi = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldMaskelemeTipi').value;
        YazimSekli = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldYazimSekli').value;
        FocusBackColor = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldFocusBackColor').value;
        FocusForeColor = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldFocusForeColor').value;
        BlurBackColor = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldBlurBackColor').value;
        BlurForeColor = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldBlurForeColor').value;
        AutoPostback = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldAutoPostback').value;
        MaxLength = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldMaxLength').value;
        MinLength = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldMinLength').value;
        MultiLine = GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldMultiLine').value;

        MetinEtiketi = GetLabelAsObjectGmk(sender, 'GenelEtiket');
        MetinEtiketiBackColor = MetinEtiketi.style.backgroundColor;
        MetinEtiketiForeColor = MetinEtiketi.style.color;

        if (FocusBackColor == '') FocusBackColor = '#f0f8ff';
        if (FocusForeColor == '') FocusForeColor = '#0080ff';
        if (BlurBackColor == '') BlurBackColor = '#ffffff';
        if (BlurForeColor == '') BlurForeColor = '#000000';

        SetFocusedStyle(sender);
    }

    function SetFocusedStyle(sender) {
        sender.style.backgroundColor = FocusBackColor;
        sender.style.color = FocusForeColor;

        MetinEtiketi.style.backgroundColor = FocusBackColor;
        MetinEtiketi.style.color = FocusForeColor;
    }

    function SetBluredStyle(sender) {
        sender.style.backgroundColor = BlurBackColor;
        sender.style.color = BlurForeColor;

        MetinEtiketi.style.backgroundColor = MetinEtiketiBackColor;
        MetinEtiketi.style.color = MetinEtiketiForeColor;

        FazlaBosluklariKaldir(sender);

        if (!MinimumUzunlukKontrolu(sender, MinLength, '', false)) { SetMaxLength(sender); return; }

        GetHiddenFieldsAsObjectGmk(sender, 'HiddenFieldText').value = sender.value;

        if (AutoPostback == '1' && txtChanged == '1') { txtChanged = '0'; __doPostBack('' + sender.id + '', ''); }
    }

    function SetYazimSekli(sender, e) {
        var kyCod = (e.which) ? e.which : e.keyCode;

        GetInstantCursorPosition(sender);

        if (isOtherValidKey(kyCod)) { SetMaxLength(sender); return true; }

        if (MaskelemeTipi == '3') TelefonFormat(sender, e);
        if (MaskelemeTipi == '5') ParaFormat(sender);
        if (MaskelemeTipi == '6') YazismaKoduFormat(sender);
        if (MaskelemeTipi == '10') UlkeTelefonKoduFormat(sender);
        if (MaskelemeTipi == '11') KurumsalKodFormat(sender);
        if (MaskelemeTipi == '12') FonksiyonelKodFormat(sender);
        if (MaskelemeTipi == '14') ParaFormat(sender);
        if (MaskelemeTipi == '15') ButceEkonomikKodFormat(sender);

        var kupCode0 = 96; var kupCode9 = 105;

        if (MaskelemeTipi != '3' && MaskelemeTipi != '5' && MaskelemeTipi != '6' && MaskelemeTipi != '10' && MaskelemeTipi != '11' &&
            MaskelemeTipi != '12' && MaskelemeTipi != '14' && MaskelemeTipi != '15' && (kyCod < kupCode0 || kyCod > kupCode9)) {
            switch (YazimSekli) {
                case '0': break; //birşey yapma
                case '1': HepsiKucuk(sender); break;
                case '2': HepsiBuyuk(sender); break;
                case '3': IlkHarflerBuyuk(sender); break;
            }
            if (MultiLine != '1') SetLastCursorPosition(sender);
        }

        SetMaxLength(sender);
    }

    function SetMaxLength(sender) {

        if (MaxLength == '0' || MaxLength == '') { txtChanged = '1'; return; }
        if (sender.value.length > MaxLength)
            sender.value = sender.value.substring(0, MaxLength)

        var objLabel = GetLabelAsObjectGmk(sender, 'LabelKalanKarakterSayisi')
        var kalan = parseInt(MaxLength, 10) - sender.value.length;

        if (BrowserTipi() == 'IE')
            objLabel.innerText = kalan + '';     //bir değer '' ile toplandığında otomatik olarak değeri string'e dönüştürür
        else
            objLabel.textContent = kalan + '';

        if (kalan > 0) txtChanged = '1';
    }

    function FazlaBosluklariKaldir(sender) {
        var yazi = sender.value;
        while (yazi.indexOf('  ') > -1) {
            yazi = yazi.replace('  ', ' ');
        }
        sender.value = yazi.trim();
    }

    function IlkHarflerBuyuk(sender) {
        ProperCase(sender);
    }

    function SetTextFormat(sender, e) {
        var kyCod = (e.which) ? e.which : e.keyCode;
        var kyValid;

        var kpVirgul = 44;
        var kpNokta = 46;

        switch (MaskelemeTipi) {
            case '0': kyValid = true; break;
            case '1': kyValid = isNumberKey(e); break;
            case '2': kyValid = isTextKey(e); break;
            case '3': if (isNumberKey(e)) kyValid = true; else kyValid = false; break;
            case '4': if (isNumberKey(e) || kyCod == kpVirgul) kyValid = true; else kyValid = false; break;
            case '5': if (isNumberKey(e) || kyCod == kpVirgul) kyValid = true; else kyValid = false; break;
            case '6': kyValid = true; break;
            case '7': kyValid = true; break;
            case '8': kyValid = true; break;
            case '9': if (isNumberKey(e) || kyCod == kpVirgul) kyValid = true; else kyValid = false; break;
            case '10': if (isNumberKey(e)) kyValid = true; else kyValid = false; break;
            case '11': if (isNumberKey(e)) kyValid = true; else kyValid = false; break;
            case '12': if (isNumberKey(e)) kyValid = true; else kyValid = false; break;
            case '13': if (isNumberKey(e)) kyValid = true; else kyValid = false; break;
            case '14': if (isNumberKey(e)) kyValid = true; else kyValid = false; break;
            case '15': if (isNumberKey(e)) kyValid = true; else kyValid = false; break;
        }

        if (kyValid) { return true; } else { (e.which) ? e.returnValue = false : e.keyCode = 0; return false; }
    }

var TelOkay='false';
    function TelefonFormat(sender, e) {
        var tel = sender.value;
        
        if (tel.length == 14) TelOkay = 'true';
        else if (tel.length < 11) TelOkay = 'false';
        if (TelOkay == 'true') return;
        
        tel = tel.replace(/\(/g, '');
        tel = tel.replace(/\)/g, '');
        tel = tel.replace(/\s/g, '');
        tel = '(' + tel.substring(0, 3) + ')' + tel.substring(3);
        tel = tel.substring(0, 8) + ' ' + tel.substring(8);
        tel = tel.substring(0, 11) + ' ' + tel.substring(11, 14);
        sender.value = tel;
    }

    function UlkeTelefonKoduFormat(sender, e) {
        var tel = sender.value;

        tel = tel.replace(/\(/g, '');
        tel = tel.replace(/\)/g, '');
        tel = tel.replace(/\+/g, '');
        sender.value = '+(' + tel + ')';
        if (sender.value.length > 7) sender.value = sender.value.substring(0, 6) + ')';
    }

    function YazismaKoduFormat(sender) {
        var yazKod = sender.value;

        if (yazKod.length == 1) { sender.value = yazKod.substring(0, 1).toUpperCase() + '.' + yazKod.substring(1); return; }
        if (yazKod.length == 4) { sender.value = yazKod.substring(0, 4) + '.' + yazKod.substring(4); return; }
        if (yazKod.length == 6) { sender.value = yazKod.substring(0, 6) + '.' + yazKod.substring(6); return; }
        if (yazKod.length == 10) {
            var txt = yazKod.substring(0, 10);
            txt = txt.replace(/i/g, 'İ');
            txt = txt.replace(/ı/g, 'I');
            sender.value = txt.toUpperCase() + '.' + yazKod.substring(10);
            return;
        }
        if (yazKod.length == 12) { sender.value = yazKod.substring(0, 12) + '.' + yazKod.substring(12); return; }
        if (yazKod.length == 15) { sender.value = yazKod.substring(0, 15) + '.' + yazKod.substring(15); return; }
        if (yazKod.length == 18) { sender.value = yazKod.substring(0, 18) + '.' + yazKod.substring(18); return; }
    }

    function ParaFormat(sender) {
        var yazi = sender.value;
        var parca = new Array();
        parca = yazi.split(',');

        var tamKisim = parca[0];
        var sonuc = '';
        tamKisim = tamKisim.replace(/\./g, '');

        if (tamKisim.length > 3) {

            var mod = tamKisim.length % 3;
            var modKismi = tamKisim.substring(0, mod);
            var modSonrakiKisim = tamKisim.substring(mod);
            for (i = 0; i < modSonrakiKisim.length; i = i + 3) {
                sonuc = sonuc + '.' + modSonrakiKisim.substring(i, i + 3);
            }
            sonuc = sonuc.substring(1, sonuc.length);
            if (parca.length == 2) sonuc = modKismi + '.' + sonuc + ',' + parca[1].substring(0, 2); else sonuc = modKismi + '.' + sonuc;
            if (sonuc.substring(0, 1) == '.') sonuc = sonuc.substring(1);
        }
        else {
            if (parca.length == 2) sonuc = tamKisim + ',' + parca[1].substring(0, 2); else sonuc = tamKisim;
        }
        sender.value = sonuc;
    }

    function KurumsalKodFormat(sender) {
        var krmslKod = sender.value;

        if (krmslKod.length == 2) { sender.value = krmslKod.substring(0, 2) + '.' + krmslKod.substring(2); return; }
        if (krmslKod.length == 5) { sender.value = krmslKod.substring(0, 5) + '.' + krmslKod.substring(5); return; }
        if (krmslKod.length == 8) { sender.value = krmslKod.substring(0, 8) + '.' + krmslKod.substring(8); return; }
        if (krmslKod.length == 9) { sender.value = krmslKod.substring(0, 9) + '.' + krmslKod.substring(9); return; }
        if (krmslKod.length == 11) { sender.value = krmslKod.substring(0, 11) + '.' + krmslKod.substring(11); return; }
    }
    function FonksiyonelKodFormat(sender) {
        var fnkKod = sender.value;

        if (fnkKod.length == 2) { sender.value = fnkKod.substring(0, 2) + '.' + fnkKod.substring(2); return; }
        if (fnkKod.length == 4) { sender.value = fnkKod.substring(0, 4) + '.' + fnkKod.substring(4); return; }
        if (fnkKod.length == 6) { sender.value = fnkKod.substring(0, 6) + '.' + fnkKod.substring(6); return; }
        if (fnkKod.length == 9) { sender.value = fnkKod.substring(0, 9) + '.' + fnkKod.substring(9); return; }
    }

    function ButceEkonomikKodFormat(sender) {
        var beKod = sender.value;

        if (beKod.length == 1) sender.value = '0';
        if (beKod.length == 2) { sender.value = beKod.substring(0, 2) + '.' + beKod.substring(2); return; }
        if (beKod.length == 4) { sender.value = beKod.substring(0, 4) + '.' + beKod.substring(4); return; }
        if (beKod.length == 6) { sender.value = beKod.substring(0, 6) + '.' + beKod.substring(6); return; }
    }
    
</script>

